﻿namespace Fantom
{
	/// <summary>
	/// 表明对象是否可被选择。
	/// </summary>
	public interface ISelectable
	{
		/// <summary>
		/// 选中时触发该事件。
		/// </summary>
		event SelectableEventHandler OnSelect;

		/// <summary>
		/// 失去选中时触发该事件。
		/// </summary>
		event SelectableEventHandler LostSelect;

		/// <summary>
		/// 是否被选中，该属性被修改时会触发<see cref="ISelection"/> 中的<see cref="ISelection.OnSelectionChanged"/> 事件与 <see cref="OnSelect"/> 或 <see cref="LostSelect"/> 事件。
		/// </summary>
		bool IsSelected { get; }

		/// <summary>
		/// 选中当前对象。
		/// </summary>
		void Select();


		/// <summary>
		/// 取消选中当前对象。
		/// </summary>
		void UnSelect();
	}
}
